﻿namespace QASPRibbon
{
    /// <summary>
    /// Color for contextual tab
    /// </summary>
    public enum RibbonContextualColor
    {
        /// <summary>
        /// No color
        /// </summary>
        None,
        /// <summary>
        /// Dark blue
        /// </summary>
        DarkBlue,
        /// <summary>
        /// Light blue
        /// </summary>
        LightBlue,
        /// <summary>
        /// Teal
        /// </summary>
        Teal,
        /// <summary>
        /// Orange
        /// </summary>
        Orange,
        /// <summary>
        /// Green
        /// </summary>
        Green,
        /// <summary>
        /// Magenta
        /// </summary>
        Magenta,
        /// <summary>
        /// Yellow
        /// </summary>
        Yellow,
        /// <summary>
        /// Purple
        /// </summary>
        Purple
    }

    /// <summary>
    /// An enumeration value that determines how controls in the group are rendered.
    /// </summary>
    public enum RibbonDisplayMode
    {
        None,
        Image16Only,
        Image16AndCaption,
        Image32AndCaption,
        CaptionOnly,
        Menu,
        Menu16,
        Menu32
    }

    /// <summary>
    /// An enumeration value that determines how controls in the section of the menu are rendered.
    /// </summary>
    public enum RibbonMenuDisplayMode
    {
        /// <summary>
        /// Renders as a text-only menu item.
        /// </summary>
        Menu,
        /// <summary>
        /// Renders as a menu item with a 16-by-16-pixel icon.
        /// </summary>
        Menu16,
        /// <summary>
        /// Renders as a menu item with a 32-by-32-pixel icon.
        /// </summary>
        Menu32
    }

    public enum RibbonCommandType
    {
        /// <summary>
        /// Not a specific type of command
        /// </summary>
        General,
        /// <summary>
        /// A command that is generated when a user selects one option in an option group
        /// </summary>
        OptionSelect,
        /// <summary>
        /// A command that is used for controls that should not close the menu when clicked.
        /// </summary>
        IgnoredByMenu
    }
    
    /// <summary>
    /// Scales
    /// </summary>
    public enum RibbonScales
    {
        Large = 20,
        LargeLarge = 30,
        LargeMedium = 40,
        LargeSmall = 50,
        Medium = 60,
        MediumLarge = 70,
        MediumMedium = 80,
        MediumSmall = 90,
        Small = 100,
        SmallLarge = 110,
        SmallMedium = 120,
        SmallSmall = 130,
        Popup = 140
    }

    /// <summary>
    /// Template identifiers for standard SharePoint lists
    /// Helper enumeration for <see cref="RibbonCustomAction"/> class Provision methods.
    /// </summary>
    public enum ListTypes
    {
        /// <summary>
        /// Provision to site/web pages
        /// </summary>
        None = -1,
        /// <summary>
        /// All lists
        /// </summary>
        All = 0,
        /// <summary>
        /// Generic list
        /// </summary>
        GenericList = 100,
        /// <summary>
        /// Generic document library
        /// </summary>
        GenericLibrary = 101,
        /// <summary>
        /// Surveys list
        /// </summary>
        SurveysList = 102,
        /// <summary>
        /// Links list
        /// </summary>
        LinksList = 103,
        /// <summary>
        /// Announcements list
        /// </summary>
        AnnouncementsList = 104,
        /// <summary>
        /// Contacts list
        /// </summary>
        ContactsList = 105,
        /// <summary>
        /// Events calendar
        /// </summary>
        Events = 106,
        /// <summary>
        /// Tasks list
        /// </summary>
        TasksList = 107,
        /// <summary>
        /// Discussion board
        /// </summary>
        DiscussionsList = 108,
        /// <summary>
        /// Picture library with thumbnails preview
        /// </summary>
        PictureLibrary = 109,
        /// <summary>
        /// Data source library
        /// </summary>
        DataSourceLibrary = 110,
        /// <summary>
        /// Library containing site templates
        /// </summary>
        SiteTemplateGallery = 111,
        /// <summary>
        /// User information list
        /// </summary>
        UserInformationList = 112,
        /// <summary>
        /// Gallery of webparts (*.webpart &amp; *.dwp files)
        /// </summary>
        WebPartGallery = 113,
        /// <summary>
        /// Gallery of list templates
        /// </summary>
        ListTemplateGallery = 114,
        /// <summary>
        /// Library containing xml forms
        /// </summary>
        XmlFormLibrary = 115,
        /// <summary>
        /// Gallery of masterpage files
        /// </summary>
        MasterPagesGallery = 116,
        /// <summary>
        /// Nocode workflow library
        /// </summary>
        NoCodeWorkflowLibrary = 117,
        /// <summary>
        /// Workflow process library
        /// </summary>
        WorkflowProcessLibrary = 118,
        /// <summary>
        /// Wiki page library
        /// </summary>
        WikiPageLibrary = 119,
        /// <summary>
        /// Grid list
        /// </summary>
        GridList = 120,
        /// <summary>
        /// Data connection library
        /// </summary>
        DataConnectionLibrary = 130,
        /// <summary>
        /// Workflow history
        /// </summary>
        WorkflowHistory = 140,
        /// <summary>
        /// Tasks list with Gantt diagram
        /// </summary>
        GanttTasks = 150,
        /// <summary>
        /// Meeting series
        /// </summary>
        MeetingSeries = 200,
        /// <summary>
        /// Meeting agenda
        /// </summary>
        MeetingAgenda = 201,
        /// <summary>
        /// Meeting attendees
        /// </summary>
        MeetingAttendees = 202,
        /// <summary>
        /// Meeting decisions
        /// </summary>
        MeetingDecisions = 204,
        /// <summary>
        /// Meeting objectives
        /// </summary>
        MeetingObjectives = 207,
        /// <summary>
        /// Meeting text box
        /// </summary>
        MeetingTextBox = 210,
        /// <summary>
        /// Meeting things to bring
        /// </summary>
        MeetingThingsToBring = 211,
        /// <summary>
        /// Meeting workspace pages
        /// </summary>
        MeetingWorkspacePages = 212,
        /// <summary>
        /// Portal sites
        /// </summary>
        PortalSites = 300,
        /// <summary>
        /// Posts list for the Blog template
        /// </summary>
        BlogPosts = 301,
        /// <summary>
        /// Comments list for the Blog template
        /// </summary>
        BlogComments = 302,
        /// <summary>
        /// Categories list for the Blog template
        /// </summary>
        BlogCategories = 303,
        /// <summary>
        /// Issues list
        /// </summary>
        IssuesList = 1100,
        /// <summary>
        /// Administrator tasks
        /// </summary>
        AdministratorTasks = 1200,
        /// <summary>
        /// Personal document library
        /// </summary>
        PersonalDocumentLibrary = 2002,
        /// <summary>
        /// Private document library
        /// </summary>
        PrivateDocumentLibrary = 2003

    }

    /// <summary>
    /// Display forms for a SharePoint list.
    /// Helper enumeration for <see cref="RibbonCustomAction"/> class Provision methods.
    /// </summary>
    public enum ListForms
    {
        /// <summary>
        /// View of the list
        /// </summary>
        ListView,

        /// <summary>
        /// New element creation
        /// </summary>
        NewForm,

        /// <summary>
        /// Edit existing list element
        /// </summary>
        EditForm,

        /// <summary>
        /// Display one item
        /// </summary>
        DisplayForm,

        /// <summary>
        /// All the forms
        /// </summary>
        All
    }

    ///<summary>
    ///</summary>
    public enum RibbonGalleryElementSize
    {
        /// <summary>
        /// 16px by 16px
        /// </summary>
        Size16by16,
        /// <summary>
        /// 32px by 32px
        /// </summary>
        Size32by32,
        /// <summary>
        /// 48px by 48px
        /// </summary>
        Size48by48,
        /// <summary>
        /// 64px by 48px
        /// </summary>
        Size64by48,
        /// <summary>
        /// 72px by 96px
        /// </summary>
        Size72by96,
        /// <summary>
        /// 96px by 72px
        /// </summary>
        Size96by72,
        /// <summary>
        /// 96px by 96px
        /// </summary>
        Size96by96,
        /// <summary>
        /// 128px by 128px
        /// </summary>
        Size128by128,
        /// <summary>
        /// 190px by 30px
        /// </summary>
        Size190by30,
        /// <summary>
        /// 190px by 40px
        /// </summary>
        Size190by40,
        /// <summary>
        /// 190px by 50px
        /// </summary>
        Size190by50,
        /// <summary>
        /// 190px by 60px
        /// </summary>
        Size190by60
    }
    
    /// <summary>
    /// An enumeration value that specifies the vertical alignment of controls within the group.
    /// </summary>
    public enum RibbonSectionAlignment
    {
        /// <summary>
        /// Control icons are aligned to the top edge of their row.
        /// </summary>
        Middle = 1,
        /// <summary>
        /// Control icons are aligned in the middle of their row.
        /// </summary>
        Top = 0
    }

    /// <summary>
    /// An enumeration value that specifies the section type
    /// </summary>
    public enum RibbonSectionType
    {
        /// <summary>
        /// Divider
        /// </summary>
        Divider = 0,
        /// <summary>
        /// The group can contain one child Row element.
        /// </summary>
        OneRow = 1,
        /// <summary>
        /// The group can contain two child Row elements.
        /// </summary>
        TwoRows = 2,
        /// <summary>
        /// The group can contain three child Row elements.
        /// </summary>
        ThreeRows = 3
    }

    public enum RibbonQATLocation
    {
        Left = 0,
        Right = 1
    }
}
